package object_oriented

class Counter1 {
  var value = 0
  // 方法参数前不能加上val或者var关键字来限定，所有的方法参数都是不可变类型的
//  def increment(step: Int): Unit = { value += step}
  // 当方法的返回结果类型可以从最后的表达式推断出时，方法定义中可以省略返回结果类型，
  // 同时，如果方法只有一条语句，还可以省略方法体两边的花括号
//  def increment(step: Int) = value += step
  // 如果方法的返回结果类型为Unit，可以同时省略返回结果类型和等号，但花括号不能省略
  def increment(step: Int) { value += step }
  // 对于无参数方法，定义时可以省略括号，如果定义时省略了括号，那么在调用时也不能带括号
  def current: Int = value
  // 如果无参数方法在定义时带括号，则调用时可以带括号，也可以不带括号
  def getValue(): Int = value
}

object Counter1 {
  def main(args: Array[String]): Unit = {
    val c = new Counter1
    // 如果方法只有一个参数，可以省略点号"."而采用中缀调用法，形式为“调用者 方法名 参数”
    c increment 5
    c.getValue()
    c.getValue
    c.current
  }
}
